{
 "cells": [
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "1、为什么要引入核函数？"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "通过将数据映射到高维空间，来解决在原始空间中线性不可分的问题"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "2、给出合页损失的数学形式并画出图形"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "数据点如果被正确分类，损失为0，如果没有被正确分类，损失为z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQEAkACQAAD/4RDSRXhpZgAATU0AKgAAAAgABAE7AAIAAAAEWFlYAIdpAAQAAAABAAAISpydAAEAAAAIAAAQwuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAMAAgAAABQAABCYkAQAAgAAABQAABCskpEAAgAAAAM4NwAAkpIAAgAAAAM4NwAA6hwABwAACAwAAAiMAAAAABzqAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAxOTowODoyNCAxMDo1MzoyNQAyMDE5OjA4OjI0IDEwOjUzOjI1AAAAWABZAFgAAAD/4QsWaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIvPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj48eG1wOkNyZWF0ZURhdGU+MjAxOS0wOC0yNFQxMDo1MzoyNS44NzA8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj48ZGM6Y3JlYXRvcj48cmRmOlNlcSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6bGk+WFlYPC9yZGY6bGk+PC9yZGY6U2VxPg0KCQkJPC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMABwUFBgUEBwYFBggHBwgKEQsKCQkKFQ8QDBEYFRoZGBUYFxseJyEbHSUdFxgiLiIlKCkrLCsaIC8zLyoyJyorKv/bAEMBBwgICgkKFAsLFCocGBwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKv/AABEIAv8DdQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APpGiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig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NrEDoOTXqFU9W0y31nS57G8TdFMu1hUyV0XF2Zyvwnuo7jwLbLGcmE7G9jWV8bLpI/C0NsxG+WUMoz6Gs7TvDHi/wHqE39gomo2MrZERP6njg06TwT4k8a65De+KylraRni3UnIHoOKqfvtWJj7idzoPhHpz2XgmOSRSrXDF8EehIruqitbaKztY7eBQscahVA9BUtVJ3dyYqyCiiipKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAZLEk8LxSqGR1KsD3BrxPxd8PtS8Max/bfhcM0Ctv2J96I9cY7ivb6OtLrdDvpZnB+CPiRB4gkTTdRie21FRjawOHPr7fjXeVQj0LS4r/7bFYW6XPXzVjAb86v1TdyUrBRRRSGFFFFAGF4x1a60fw5PcafbPcXDDYioM4J7ms74eeHZ9D0Izahk3t43mzZ6rnt+lddRQtLg9UkFFFFABRRRQAUUUUAZHiXTtT1PSDb6JqP9nXJcETYzgdxXH/8IX47/wCh1P8A3wf8K9HooA84/wCEL8d/9Dqf++T/AIUf8IX47/6HU/8AfJ/wr0eigDgtL8J+M7TVLee+8Wm5t43zJDtPzj0rvR0oopgFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArnbrxKbi61bS9Nt7oXtrEEhk+zswMzK23+HCqCF+ZsA5J6DJ6KmiNBK0oRRIyhWfHJAzgZ9Bk/maAHUUUUAFFFF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2b0x0pajSSN/mjcMp5BByDT9wzigBaKKKACiiigAopu/rx0pdwoAWimlwCB3NG8DPFADqKQMCuegpN47c/SgB1FNDg9KVWznjH1oAWim7x698Uu6gBaKbvGcDk0pbHvQAtFJmgsB1oAWimhw2cHOKXcM4oAWimhwQMUbx29aAHUUgOaWgArN8R/8ixqv/XnL/wCgGtKszxJx4X1U/wDTnL/6AaAOY+DX/JLNK/3T/Ou6rjvhTYy6d8M9HhnILNCJBj0bkV2J6UARsxCkgcjtXgPjc+LPFXxDsNLvYW07T1udsEynlvevfirbRjr615hqtv4t1L4o6b9p01V0qzlLrPGcgj3oA5bTdCtdL+IniGK5n88W1jnfLyc4PNYh0tJfB/hu+mQyPPqoJZh/DuGK9A1zwxqHibXtQh0/Tn0yO6Oy5vpT80i+iis3xT4I1bRrzQhpnmahpFrOheDuhz96gDufEPhzUdZlspLC9ito7YBljeMNhsdeRXlvxY0/VrqODw5ZavJqGoXJ8ya2QcKq87jjpyK9X8SavrFusVpoWktcTyoD5rttjTPqRzmq/g3wKNBuLjVdSlN3q95/rpXOdo67R7UAcp4N0q/8SeEYfJ8QXEE8K+TPF0aMrxjFeheGNFl0HT/sk97JeHOVklOWrivFvgXXrDWZfEfgi+8i8kI820I/dy+5Fd3oDao+jWza4qC9YZk8voKANaiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooARsbTmuU8e+FI/GHhmTTJGkjOQysjFSD+HWusooA+cTq3jL4K6lBa6sz6t4fZ/llILGMfXtXtPhLxvoPjGxFxoV7HMQAZIwfmQ+hFa2o2FrqtrLZ39us0MqlXVhniuB8K/BnRvB3i6XWdHvLlI2B/0bPyjPvQB6ZS1wFh8WfD914tufDssxtLuFtqecMLIfY13StvAYY2kc0AS0UDpRQAUUUUAFFFFABRRRQAzqMd/auJ8dfDDQfG1owvLcW92vMd1GMMD7+tdzTTy2MHp1oA+eNH8d698Idcj8M+N4GutKHyW2oDklSeDmveNK1ay1mwju9NuY7i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xeWzbkkjGOfeuT8bfFZ/BHjK0sNSsHOlzL8116GgD1PNFZmk6xZa3p8V5p06TwSDOUOcVorQA6iiigAooooAKKKKACmv79KdRQBmaxomn67YPa6naR3EbjGHGcV4TrXgzxT8JdSm1jwdM93pRbc9qcnaO/FfRJ6VHLEk8ZimUMrdQR1oA8+8D/FzQfFkKwXEosdQGFeGY7TmvQkxt4xg9MV5L46+CGma+1xqOgk6fqxbcjocAkVy3g/4naz4C1RfDHxGEjRoSsV4efpzQB9DZoqjpepWmq2q3VhcpcQyAFWQ5xV6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACs3xEM+GdUA5Js5cf98GtKquoqH026Vuhhf+VAHIfBwFfhbpYYYIUgg9ua7muV+G6BPBcCr0EsmP++q6qgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApCoJ5paKAE28VgeKvCOleMNKl0/WLZZVI+ViOV+hroCMik25Hzc0AfNUtn4q+BmuG6s0k1LQpSd0S5IjGa9t8F+OtK8a6WLnS5cyADzYiOUPpXQXlhBfW7W91GssTjDKwzmuZk0Gz8DeG9RuPC2nAT7WlCIOWagDrFYk/Sn15P8P/AI16b4hmaw8QhdK1NG2mOX5Q5/HpXqkc8cqb42DLjOQcg0ASUUgbOaXNABRRRQAUUUUABGaMZoooAQKBXLeM/AWh+MdLa11W2Vm+8koHzK3rmuqprAnjsaAPm7TrjxT8CtVaG+VtQ8OzSZ3oM+WK918MeLtL8W6Yl7o10kqH7yk/Mp9MVd1HSbbVbWW01KCOe1kXBVxnNeF+K/hz4g+HGoN4h+HVxILZTums85wPYUAfQO/nngU9c7ea8/8Ah18TLDxlpKm4ZbXU4vknt3OG3eoFd8rjbwc/SgB9FIDk4paACiiigAooooAKKKKACiiigAooooAKKKKACsHxrqp0XwXquoL1htnx9cYFb1cl8UAP+FZ63uGR9magC14AiWPwHpLqMGe2SZ/dmGT+tdHXP+BOfAGhE9fsEX/oIroKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKY6lvp6etPooA8x+IHwU0Pxtm8tydP1JQSJYxgOe26uA0Dxn4r+EmrpoPje3mvtKZgkF2gLBB659K+jD0qlfabZalGIb+0hukU5AlQEUALpt7HqWnQ3MRyko3KcYyKtoevBHPevNPilqXirw7Bp9/wCFbcS2Fq2buKNeSnoK1PBHxR0PxnZxiGT7Nffde1mOHDY9KAO5oqNSNw/pUlABRRRQAUUUUAFFFFACHGOajkiWRCrLuVuoI61LRQB4r8SPg9d3Opf8JJ4EkFjqcXzPCpwJfpVDwb8ar7TNRTw/8Q7BtPu+FS4YYVvrXvNch47+HuieOtOa31SBVnA/dXCDDqfrQB01ndxXkCT20qSwsuQ6HINWa+brDUvF/wAD9SOn6rHLqnh1j+7mQFvKFe4eGfGOjeK7VZNIvYp8oGKKfmX8KAOhooooAKKKKACiiigAooooAKKKKACiiigArk/ih/yTLW/+vZq6yuX+JFlLqHw81i2g4d7dunoOaALHgP8A5J/oX/XhF/6CK6CsLwQgj8C6KgOdtlEMj/dFbtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAARkc0YoooAa0aOpV1DKwwQRwRXjvxG+CyX18fEHgqX+zdVTLsI22q3HbHSvZKY6lj6joQaAPMPhR4/vNdWTw/4htZYtY05MSyMvD9s16bvbb1B9KpJo1raT3F5Z28aXcybS4HJ9M14jP8S/Fnw/8AFl1a+KrFrnTZZspOgJCLntQB9ACisPw14u0jxVpqXmkXSzIw5API+orbzxQAtFAooAKK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r0qigDgtK8J63p3jT+0rzUlu7drfyl/dhWB+lYXi/wCH+r/EHxEsOp/Z7LT7UZFwiZlkz1Ge3SvWSoLA+lIFAYnuaAPK9N+H/iTwVYz6T4Svo57C6bINyPmgz94j1qHVvhFeWEtpqngy/wDsesR/6+RvuzepIr1yigDg9e8K6zr1vobXckT3NnKslw44DEeldhFp1vFcG4ECeeVCmTHJ/GrlFAHn3xE0TxFeaRNa+EoLRGvPluXkHzEVR8TeDNRufhnpGiWcJe4gliaQJ0G08mvTiM0o4FAHGeLfCI1HwneWumWVv9suQu4suN2COpqtq/gSXUfF3hzVoDHFFpKMskX97OK7yigDgPDWn6+fiFq1/q9klta7QluUOQ61p+MvEWoaFDCNN0q4vnmbaXhUHZ9a6ymOu7+EMPegDh/BfhGS0vrjX9XiX+1LzknHKL6Uzxd4Z1BPENj4m8PQ+bdW/wAlxBu2mWP29TXer79aWgDF/su01pbG91KwKzwHzI1kHzRtiq83g7TZ/F0XiN4Q19HH5YZxkAe3ofeuiooAZggYGeO9YXifwlY+LrSK11USGCOQPtVsZI9faugooA465+Gnh651ewvxZ+XJYqFjVeFI9xXWiIKAAMBRgAVJRQBWjtIoXdoYwjSHcxA6muf8R+BNM8SajBqN358V7briGeGQqyj0rqaRjgUAc9onhfTPDYkuokL3TjE13Kd0jDrgmuQ1XRn+I/jW0+02skGi6RJ56yMuPtEo4H4V6bt68blbqKERUXC4VfQDFABAgjiCqMADAFUfEPiHS/Cug3Gs69c/ZNPttvmzeWz7dzBB8qgk/MwHA71ojP4dq83/AGg/+SE+If8At2/9KYqAPSaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvP8A45WMup/BvWbK3aNZZ3tUUyuFUE3UXU/06noMnivQKzfEPh7S/FWg3Gja9bfatPudvmw+YybtrBx8ykEfMoPB7UAQaVq8usS2dxBFNFbPaGSdZImUCRthQKzKN4x5nK8evUVs02ONIYkihRY40UKqKMBQOgA7CnUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//2Q==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(filename=\"C:\\\\XYX_use\\\\AI_course\\\\AI_learn\\\\AI_homework\\\\推荐系统\\\\week1\\\\hinge.JPG\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "3、什么是支持向量？为什么SVM中只有一小部分的训练样本是支持向量（稀疏的）？"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "支持向量就是离分类超平面最近的样本点，因为每一个样本点都是一个多维的向量，向量的每一个维度都是这个样本点的一个特征。"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "因为支持向量都是在超平面间隔上的点，其余大部分点都在两侧，位置比较特殊，而其他大部分点对超平面的最终位置的确定起不了作用，所以只有一小部分的训练样本是支持向量。"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "4、 决策树中特征分裂的准则有哪些？"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "ID3：信息增益最大（对标签𝑌提供信息最多的特征），倾向于选择取值多的特征进行分裂"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "C4.5：ID3的改进，信息增益率最大"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "CART：\n",
    "• 分类：GINI指数最小\n",
    "• 回归：均方误差最小"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "5、SVM模型并没有概率解释。为了使SVM模型能输出概率，我们应该设置哪个参数？"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "参数probability被设为True，则可以得到属于每个类别的概率估计"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "6、采用train_test_split，从将数据集中随机抽取10000条记录，用于下述作业中模型的训练（原始数据集太大，剩余数据抛弃）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "#竞赛的评价指标为logloss，但LinearSVC不支持概率\n",
    "#所以在这个例子中我们用正确率accuracy_score作为模型选择的度量\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取数据\n",
    "# path to where the data lies\n",
    "dpath = 'C:\\\\XYX_use\\\\AI_course\\\\AI_learn\\\\AI_homework\\\\推荐系统\\\\week1\\\\Otto_SVM\\\\data\\\\'\n",
    "\n",
    "# 采用原始特征 + tf_idf特征\n",
    "#原始特征 + tf_idf特征对线性SVM训练还是很快，RBF核已慢得不行\n",
    "# RBF核只用tf_idf特征\n",
    "train1 = pd.read_csv(dpath +\"Otto_FE_train_org.csv\")\n",
    "train2 = pd.read_csv(dpath +\"Otto_FE_train_tfidf.csv\")\n",
    "#train = pd.read_csv(dpath +\"Otto_FE_train_tfidf.csv\")\n",
    "\n",
    "#去掉多余的id\n",
    "train2 = train2.drop([\"id\",\"target\"], axis=1)\n",
    "train =  pd.concat([train1, train2], axis = 1, ignore_index=False)\n",
    "train.head()\n",
    "\n",
    "del train1\n",
    "del train2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将类别字符串变成数字\n",
    "# drop ids and get labels\n",
    "y_train = train['target']   #形式为Class_x\n",
    "X_train = train.drop([\"id\", \"target\"], axis=1)\n",
    "\n",
    "#保存特征名字以备后用（可视化）\n",
    "feat_names = X_train.columns \n",
    "\n",
    "#sklearn的学习器大多之一稀疏数据输入，模型训练会快很多\n",
    "from scipy.sparse import csr_matrix\n",
    "X_train = csr_matrix(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\84531\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2179: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 训练样本6w+，交叉验证太慢，用train_test_split估计模型性能\n",
    "# SVM对大样本数据集支持不太好，这里从6w+数据中选取1w+数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train_part, X_val, y_train_part, y_val = train_test_split(X_train, y_train, train_size = 0.16,random_state = 0)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "7. 根据6中得到的训练数据，训练线性SVM，并对超参数（正则惩罚项、C）进行超参数调优，并分析不同C对应的训练误差和交叉验证得到的测试误差的变化趋势。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#单组超参数情况，模型在训练集上训练，在校验集上的测试的测试性能\n",
    "def fit_grid_point_Linear(C, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集上训练SVC\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train,y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_val, y_val)\n",
    "    \n",
    "    print(\"C= {} : accuracy= {} \" .format(C, accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C= 0.1 : accuracy= 0.750509831082381 \n",
      "C= 1.0 : accuracy= 0.7595713571126246 \n",
      "C= 10.0 : accuracy= 0.7614182923544577 \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\84531\\Anaconda3\\lib\\site-packages\\sklearn\\svm\\base.py:931: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C= 100.0 : accuracy= 0.7577244218707915 \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C= 1000.0 : accuracy= 0.7145715495017123 \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "#SVM太慢，每次只调一个参数（这里只调C，penalty为‘l2'）\n",
    "C_s = np.logspace(-1, 3, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train_part, y_train_part, X_val, y_val)\n",
    "    accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "plt.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "#plt.savefig('SVM_Otto.png' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.0\n"
     ]
    }
   ],
   "source": [
    "### 最佳超参数\n",
    "index = np.argmax(accuracy_s, axis=None)\n",
    "Best_C = C_s[ index ]\n",
    "\n",
    "print(Best_C)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy is:  0.7724037092616107\n"
     ]
    }
   ],
   "source": [
    "# SVC训练SVC，支持概率输出\n",
    "Best_C = 10\n",
    "\n",
    "SVC3 = LinearSVC(C = Best_C)\n",
    "SVC3.fit(X_train, y_train)\n",
    "\n",
    "#3. 在校验集上测试，估计模型性能\n",
    "y_predict = SVC3.predict(X_val)\n",
    "\n",
    "print(\"accuracy is: \",accuracy_score(y_val, y_predict))"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "8. 根据6中得到的训练数据，训练RBF核SVM，并对超参数（C和gamma）进行超参数调优，并分析参数C和gamma对模型复杂度的影响，以及对训练误差和交叉验证得到的测试误差的影响"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"C= {} and gamma = {}: accuracy= {} \" .format(C, gamma, accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "accuracy_s = np.matrix(np.zeros(shape=(5, 3)), float)\n",
    "gamma_s = np.logspace(-1, 1, 3) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C= 0.1 and gamma = 0.1: accuracy= 0.7104929008426643 \n",
      "C= 0.1 and gamma = 1.0: accuracy= 0.7349263149794144 \n",
      "C= 0.1 and gamma = 10.0: accuracy= 0.32796567778675595 \n",
      "C= 1.0 and gamma = 0.1: accuracy= 0.7494709300088499 \n",
      "C= 1.0 and gamma = 1.0: accuracy= 0.7793489553272538 \n",
      "C= 1.0 and gamma = 10.0: accuracy= 0.5956943322174766 \n",
      "C= 10.0 and gamma = 0.1: accuracy= 0.7721728423563815 \n",
      "C= 10.0 and gamma = 1.0: accuracy= 0.791180884220247 \n",
      "C= 10.0 and gamma = 10.0: accuracy= 0.6113740428642888 \n",
      "C= 100.0 and gamma = 0.1: accuracy= 0.7830620647196891 \n",
      "C= 100.0 and gamma = 1.0: accuracy= 0.7806764400323214 \n",
      "C= 100.0 and gamma = 10.0: accuracy= 0.6109315479625995 \n",
      "C= 1000.0 and gamma = 0.1: accuracy= 0.7714802416406942 \n",
      "C= 1000.0 and gamma = 1.0: accuracy= 0.7750202008542075 \n",
      "C= 1000.0 and gamma = 10.0: accuracy= 0.6109315479625995 \n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-1, 3, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-1, 1, 3)    \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train_part, y_train_part, X_val, y_val)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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woIFC/xltm7d6jeUX331FdXV1X7COOus/QNQVlVVce6555Kfn88ZZ5zBmjVr/PdmzZrF0KFDCYVCjBkzhm9+85sAHH744Q2OeObPn++/PmLECCZOnEhCQgITJ07053vssceYNm0a06ZNY+3atQ0+56CDDmLLli1dsq0gmI4KgR4pmNnxwD1AIvCAc+62FuZbAPwFmOGcKwoypq4WKRv9uPDHjM7sWL9gkc7u0QfFOcfxxx/Po48+2uS9oqIili9fzuOPP87999/P//3f/7W4nuiG+rTTTuO6665r8fPa8zpAWlqa3wWztfnuuusucnPzSVJOAAAQ90lEQVRz+eMf/0hNTQ39+/f330tNTfWfJyQk+NMJCQnU1tY2mS96nuj51q1bxz333MPbb79NVlYWZ599doPuoZWVlaSlpfHkk09y0003AfDwww/7Ja62DBo0iO3btzNkyBA2b97MsGHDYlquPQI7UjCzROA+4ARgInCmmU1sZr4M4IfAiqBiCcpXFV9x64pbmTJkispGckCaM2cOr7zyit9rZt++faxbt449e/awe/duTj75ZO6++25WrVoFQEZGBnv27GmynpSUFP/kdUsJAWD27Nm8/PLLlJaWUltby+OPP86//du/MWvWLF5++WV27dpFTU0Nixcv9peZMGEC69evB2DIkCEkJydTVOTtWz7++OP+fGVlZQwfPhwz45FHHmk1gXTU7t27ycjIYMCAAWzdupUXXnihwfvr1q1j0qRJLFiwwN8esSYEgFNOOYVHHnkEgEceeYRTTz21S+OHYMtHM4H1zrnPnHPVwONAc9/gRuAOoFdd6x99kZp6G8mBaujQoTz44IOcfvrpTJkyhTlz5vDpp59SVlbGSSedxJQpUzj22GP51a9+BcCZZ57JLbfc0uETzTk5OSxatIh58+YxdepUZs+ezUknnUReXh5XXXUVM2fO5Bvf+AaTJk0iMzMTgBNPPJFXXnnFX8dDDz3E97//febMmUNCQoI/3yWXXMIDDzzA7Nmz2bhxY4M9/a4ybdo0Jk6cSH5+Pueffz5z587139uyZQuZmZl+qau57/6Tn/yEBx98kJycHD755BPAO0cS6a57zTXX8Le//Y1x48bx6quvctVVV3X5d8A5F8gPsACvZBSZ/i5wb6N5CoCnws//ARS2sK4LgCKgKC8vz/UEz2541uU/nO8e/vDheIcivdSaNWviHUKvsmfPHuecc9XV1e6EE05wS5cu9d+bP3++27BhQ4P5nHPupptucldeeWX3BtqCO+64wz38cPe0F839bgFFLoa2O8gjhebOgPjHa2aWANwN/KitFTnnfuucK3TOFbaUZbvTVxVfcevbKhuJdKef//znFBQUMHnyZA477DBOPvlk/73bb7/dP4G7dOlSpk6dSn5+Pm+++SY/+9nP4hVyA4MGDeLss3t+exHkieYSIDdqOgeIPu2eAeQD/wifQR8GLDWzU1wPPtnswmWjipoKlY1EutHdd9/d4nsTJkzwn5911lkNeh31FD/4wQ/iHUJMgjxSWAmMM7PRZpYCnAEsjbzpnCtzzg12zo1yzo0C3gJ6dEIAWPavZbxc/DKXFlyq3kYicsAJLCk452qBS4AXgLXAE865j8xskZmdEtTnBilSNpo8ZDLfnfjdeIcjItLlAr1OwTm3DFjW6LVm+6M55+YFGUtnOee48c0bVTYSkQOarmiO0XP/eo6/F/+dSwsuZUzmmHiHIyISCCWFGHxV8RW3vH2LykZywNLQ2cFrPHT2ypUryc/P55BDDuGKK65odhnnHBdddBGHHHIIU6ZM6dQ2ipWSQhtUNpK+QENnB6/x0NkXXnghv//971m3bh0fffQRy5cvb7LMX//6V4qLi1m/fj333XcfF198ceBxKim0IVI2uqTgEpWNpE/S0Nne9+jKobOLi4uprKxkxowZmBnf/e53mx0Ge8mSJXzve98DvKOpbdu2sX379g5t11hp6OxWRJeNvjfxe/EORw5kz10N2z7o2nUOOxxOaHYMyphp6Oxghs6uqKggN3f/ZVw5OTls3ry5yfbYvHlzs/MFeRGvjhRa4JzjprduUtlI+jQNnR3M0NmumcH4mhsGO9b5upKOFFrw/OfP89Kml7hy+pUqG0nwOrlHHxSnobMDGTo7JyeH4uJi//WSkhJGjBjRJObIfLNnz251vq6kI4VmfFXxFbesuIXJg1U2kr5NQ2e3T6xDZ+fm5pKamsrKlStxzvHoo482Owz2Kaecwh/+8AcAXnvtNYYOHRpo6Qh0pNBEpGxUXlOuspH0edFDZ1dXVwNwyy23kJaWxmmnnUZVVRX19fUNhs7+r//6L+666y6eeeaZdvdeih462znH/PnzOemkkwD8obNHjhzZZOjs6BO9kaGzMzIyOProoxsMnb1gwQIee+wxjjvuuMCHzh4zZkyrQ2fff//9nHPOOVRWVnLyySfz9a9/HYD77ruP1NRUzjvvPObPn89zzz3H2LFj6devn38vhUDFMpRqT/qZPn16m8PGdsayz5a5/Ifz3YMfPBjo54ho6Oz20dDZseupQ2f3OtFlo4UTF8Y7HBGJoqGzu4e5AOpqQSosLHSRemFXcs5x5T+u5NWSV/nL/L8wJksnlyVYa9eubTDks0hXae53y8zecc4VtrWsjhTCXvj8BV7c9CIXF1yshCAifZaSAl7Z6OYVN3P44MPV20hE+rQ+nxScc9z81s2U15Rz09ybSEpQhywR6bv6fFKIlI0umnqRykYi0uf16aRQWlHql40WTlJvI+m7NHR28BoPnX311VeTk5NDVlZWq8vddNNNHHLIIYwfP54XX3wx6DD77sVrzjluXnEz+2r2cePcG1U2kj4tMjDcww8/TFFREffee2+H1rN48WISEhIYP358V4bXqsjQ2e+++263fWZHRIbOvv/++wE49dRTueSSS8jPz29xmffff5/FixezZs0aiouLOf744/nkk09ISAhuf77PHim8sPEFlm9czsVTL2Zs1th4hyPSY2nobO97dOXQ2QBHHHEEw4YNa3VbLFmyhDPPPJOUlBTGjh1LXl4e77zzToe2a6z65O5xaUUpt7x1i8pG0mPc/vbtfLyja29OM37geH4686edWoeGzg5m6OwpU6bEtD02b97MvHnz/OnI0NkzZszo0PaNRZ88Urh5xc3srdmrspFIGzR0djBDZ8equYuLNXR2F3v+8+dZvnE5l027TGUj6TE6u0cfFKehswMZOjtWsQ6x3ZX61JFCpGyUPyifcyadE+9wRHo8DZ3dPrEOnR2rU045hccee4zq6mo2bNjAxo0bG5TKgtCnkkKkbHTTkbpITSQW0UNnT5kyhTlz5vDpp59SVlbGSSedxJQpUzj22GMbDJ19yy23dPhEc/TQ2VOnTmX27NmcdNJJ5OXl+UNnf+Mb32gydPYrr7ziryMydPacOXNISEhoMHT2Aw88wOzZs9m4cWPgQ2eff/75rQ6dfeWVVzJq1Ch2795NTk4ON910EwBPP/20f4J6ypQpfOtb32LChAmceOKJ/PrXvw605xHQd4bOfv5fz7v8h/Pd797/XYeWF+lqGjq7fTR0duw0dHYMMpIz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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "\n",
    "C_s = np.logspace(-1, 3, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-1, 1, 3)  \n",
    "accuracy_s1 =np.array(accuracy_s1).reshape(len(C_s),len(gamma_s))\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    plt.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "plt.savefig('RBF_SVM_Otto.png' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.0\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "### 最佳超参数\n",
    "index = np.unravel_index(np.argmax(accuracy_s1, axis=None), accuracy_s1.shape)\n",
    "Best_C = C_s[ index[0] ]\n",
    "Best_gamma = gamma_s[ index[1] ]\n",
    "\n",
    "print(Best_C)\n",
    "print(Best_gamma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy is:  0.9391280926545846\n"
     ]
    }
   ],
   "source": [
    "# SVC训练SVC，支持概率输出\n",
    "Best_C = 10\n",
    "Best_gamma = 1.0\n",
    "\n",
    "SVC4 =  SVC( C = Best_C, kernel='rbf', gamma = Best_gamma, probability=False)\n",
    "SVC4.fit(X_train, y_train)\n",
    "\n",
    "#3. 在校验集上测试，估计模型性能\n",
    "y_predict = SVC4.predict(X_val)\n",
    "\n",
    "print(\"accuracy is: \",accuracy_score(y_val, y_predict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
